package com.qf.util;

import com.qf.bean.Employee;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

/*
            敲得越多，钱越多！！！
            敲得越多，钱越多！！！
            敲得越多，钱越多！！！
*/
//定义导出数据的代码
public class ExcelUtils {

    //      此处全设置为static模式,是为了好调用

    //1、先创建一个Excel文件(以.xls结尾的文件)
    static HSSFWorkbook workbook;
    //2、创建文件中的sheet表    参数为sheet名称
    static HSSFSheet sheet;
    //3、创建sheet中的行列信息
    //3.1   创建第一行
    public static void createFirst(String headname){
        /*      如果直接在外面创建以恶Excel文件,就会每次调用的少睡会,把所有的数据
            放在一个文件中,放在这里会每次调用的时候都创建一个新的Excel文件
        */
        workbook = new HSSFWorkbook();
        //为excel表命名
        sheet = workbook.createSheet(headname);
        //创建第一行
        HSSFRow row = sheet.createRow(0);
        String[] heads = {"账号","姓名","所属部门","角色"};
        for(int i = 0;i<heads.length;i++){
            //创建列
            HSSFCell cell = row.createCell(i);
            //往列中放值
            cell.setCellValue(heads[i]);

        }
    }

    //3.2   创建第一行以外的其他行     参数表示被导出的数据集合
    public static void createOthers(List<Employee> list){
        for(int i=0;i<list.size();i++){
            //创建行
            HSSFRow row = sheet.createRow(i + 1);
            //得到list集合里的第i个对象信息
            Employee employee = list.get(i);
            //第1列
            HSSFCell cell1 = row.createCell(0);
            //为第一列赋值
            cell1.setCellValue(employee.getEmployeenum());
            //第二列
            HSSFCell cell2 = row.createCell(1);
            //为第2列赋值
            cell2.setCellValue(employee.getUsername());
            //第三列
            HSSFCell cell3 = row.createCell(2);
            //为第3列赋值
            cell3.setCellValue(employee.getDept().getDeptname());
            //第四列
            HSSFCell cell4 = row.createCell(3);
            //为第4列赋值
            cell4.setCellValue(employee.getRole().getRname());
        }
    }

    //4、设置导出信息
    public static void export(OutputStream outputStream) throws IOException {
        //设置输出的方式是以网格的方式输出
        sheet.setGridsPrinted(true);
        //将文件写入到输入流中
        workbook.write(outputStream);
    }

}
